5 research outputs found

    What Do We Think We Think We Are Doing?: Metacognition and Self-Regulation in Programming

    Get PDF
    Metacognition and self-regulation are popular areas of interest in programming education, and they have been extensively researched outside of computing. While computing education researchers should draw upon this prior work, programming education is unique enough that we should explore the extent to which prior work applies to our context. The goal of this systematic review is to support research on metacognition and self-regulation in programming education by synthesizing relevant theories, measurements, and prior work on these topics. By reviewing papers that mention metacognition or self-regulation in the context of programming, we aim to provide a benchmark of our current progress towards understanding these topics and recommendations for future research. In our results, we discuss eight common theories that are widely used outside of computing education research, half of which are commonly used in computing education research. We also highlight 11 theories on related constructs (e.g., self-efficacy) that have been used successfully to understand programming education. Towards measuring metacognition and self-regulation in learners, we discuss seven instruments and protocols that have been used and highlight their strengths and weaknesses. To benchmark the current state of research, we examined papers that primarily studied metacognition and self-regulation in programming education and synthesize the reported interventions used and results from that research. While the primary intended contribution of this paper is to support research, readers will also learn about developing and supporting metacognition and self-regulation of students in programming courses

    Explicitly Training Metacognition and Self-Regulation for Computer Programming

    No full text
    Thesis (Ph.D.)--University of Washington, 2020Programming is one of the most powerful and expressive ways of interacting with computers, but also one of the most challenging to learn. Despite this, people attempting to learn programming often do not receive explicit training or support in developing the mental skills required to succeed. If they are to succeed, learners are often required to independently become self-aware, systematic thinkers while developing and refining strategies to understand and manipulate new abstract concepts in a language they have likely never even seen before. However, to better support everyone who wants to learn programming, this dissertation presents a problem solving framework and a programming self-regulation framework. These frameworks give educators and learners the terms and definitions to discuss and reason about the types of behaviors programmers go through to solve programming problems. They also stand as novel domain specific theories of problem solving for researchers to build upon. To better support learners developing the mental skills necessary for programming, their current skills should be understood. Lacking such an understanding, I conducted two empirical studies investigating the self-regulation of untrained novices, providing a first look into how novices self-regulate while programming, how their self-regulation helps them avoid errors, and where they can use the most support developing critical programming skills. With an understanding of novices’ initial skills, new pedagogical methods should be developed to help learners develop and grow their current skills. To this end, two new pedagogical methods to support programming problem solving were invented and evaluated. The first of these evaluations demonstrate that not only is explicitly teaching programming problem solving possible, it can help learners become more productive and more independent while boosting their self-efficacy and substantiating their belief that they can become programmers. An evaluation of the second pedagogical method, an online tool delivering a novel form of programming instruction that can support instruction at scale, may help learners achieve more programming success

    Understanding wikipedia as a resource for opportunistic learning of computing concepts

    No full text
    Posts on on-line forums where programmers look for information often include links to Wikipedia when it can be assumed the reader will not be familiar with the linked terms. A Wikipedia article will thus often be the first exposure to a new computing concept for a novice programmer. We conducted an exploratory study with 18 novice programmers by asking them to read a Wikipedia article on a common computing concept that was new to them, while using the think-aloud protocol.We performed a qualitative analysis of the session transcripts to better understand the experience of the novice programmer learning a new computing concept using Wikipedia. We elicited five themes that capture this experience: Concept Confusion, Need for Examples, New Terminology, Trivia Clutter, and Unfamiliar Notation. We conclude that Wikipedia is not well suited as a resource for the opportunistic learning of new computing concepts, and we recommend adapting information sharing practices in on-line programmer communities to better account for the learning needs of the users.Martin P. Robillard, Christoph Treud
    corecore